package org.kumas.bigdata.hdfs3.checkpoint;

import java.util.LinkedList;

/*************************************************
 * TODO_Kumas
 *  Author： KumasZhang
 *  DateTime： 2021-12-07 9:06
 *  Description： 
 **/
public class DoubleBuffer {
    // TODO_Kumas 注释： 在 HDFS 源码实现中，是一个 Buffer
    LinkedList<EditLog> currentBuffer = new LinkedList<>();
    LinkedList<EditLog> syncBuffer = new LinkedList<>();

    public void write(EditLog log) {
        currentBuffer.add(log);
    }

    // TODO_Kumas 注释：  HDFS 的方法名就叫这个
    public void setReadyToSync() {
        LinkedList<EditLog> tmp = currentBuffer;
        currentBuffer = syncBuffer;
        syncBuffer = tmp;
    }

    public Long getSyncMaxTxid() {
        return syncBuffer.getLast().txid;
    }

    public void flush() {
        for (EditLog log : syncBuffer) {
            // todo:将log刷到磁盘
        }
        syncBuffer.clear();
    }
}
